// 引入模块依赖
const fs = require('fs');
const path = require('path');
const jwt = require('jsonwebtoken');
// 创建 token 类
class Jwt {
	 data;
	constructor(data) {
		this.data = data;
	}
	//生成token
	generateToken() {
		const data = this.data;
		const created = Math.floor(Date.now() / 1000);
		const cert = fs.readFileSync(path.join(__dirname, '../private_key/private.key'));//私钥 可以自己生成
		const token = jwt.sign({
			data,
			exp: created + 60 * 30,
		}, cert, { algorithm: 'RS256' });
		return token;
	}

	// 校验token
	verifyToken() {
		const token = this.data;
		const cert = fs.readFileSync(path.join(__dirname, '../private_key/public.key'));//公钥 可以自己生成
		let res;
		try {
			let result = jwt.verify(token, cert, { algorithms: ['RS256'] }) || {};
			let { exp = 0 } = result, current = Math.floor(Date.now() / 1000);
			if (current <= exp) res = result.data || {};
		} catch (e) {
			res = null;
		}
		return res;
	}
}

module.exports = Jwt;